# -*- coding: utf-8 -*-
"""
Created on Tue May 28 18:41:49 2019

@author: 郭雄GX
"""
from numpy import *
import numpy as np

x1=np.array([0.2331,1.5207,0.6499,0.7757,1.0524,1.1974,
    0.2908,0.2518,0.6682,0.5622,0.9023,0.1333,
   -0.5431,0.9407,-0.2126,0.0507,-0.0810,0.7315,
    0.3345,1.0650,-0.0247,0.1043,0.3122,0.6655,
    0.5838,1.1653,1.2653,0.8137,-0.3399,0.5152,
    0.7226,-0.2015,0.4070,-0.1717,-1.0573,-0.2099])

y1=np.array([2.3385,2.1946,1.6730,1.6365,1.7844,2.0155,
    2.0681,2.1213,2.4797,1.5118,1.9692,1.8340,
    1.8704,2.2948,1.7714,2.3939,1.5648,1.9329,
    2.2027,2.4568,1.7523,1.6991,2.4883,1.7259,
    2.0466,2.0226,2.3757,1.7987,2.0828,2.0798,
    1.9449,2.3801,2.2373,2.1614,1.9235,2.2604])

z1=np.array([0.5338,  0.8514,    1.0831,    0.4164,    1.1176,    0.5536,
    0.6071,  0.4439,    0.4928,    0.5901,    1.0927,    1.0756,
    1.0072,  0.4272,    0.4353,    0.9869,    0.4841,    1.0992,
    1.0299,  0.7127,    1.0124,    0.4576,    0.8544,    1.1275,
    0.7705,  0.4129,    1.0085,    0.7676,    0.8418,    0.8784,
    0.9751,  0.7840,    0.4158,    1.0315,    0.7533,    0.9548])

x2=np.array([1.4010,    1.2301,    2.0814,    1.1655,    1.3740,    1.1829,
    1.7632,    1.9739,    2.4152,    2.5890,    2.8472,    1.9539,
    1.2500,    1.2864,    1.2614,    2.0071,    2.1831,    1.7909,
    1.3322,    1.1466,    1.7087,    1.5920,    2.9353,    1.4664,
    2.9313,    1.8349,    1.8340,    2.5096,    2.7198,    2.3148,
    2.0353,    2.6030,    1.2327,    2.1465,    1.5673,    2.9414])

y2=np.array([1.0298,    0.9611,    0.9154,    1.4901,    0.8200,    0.9399,
    1.1405,    1.0678,    0.8050,    1.2889,    1.4601,    1.4334,
    0.7091,    1.2942,    1.3744,    0.9387,    1.2266,    1.1833,
    0.8798,    0.5592,    0.5150,    0.9983,    0.9120,    0.7126,
    1.2833,    1.1029,    1.2680,    0.7140,    1.2446,    1.3392,
    1.1808,    0.5503,    1.4708,    1.1435,    0.7679,    1.1288])

z2=np.array([0.6210,    1.3656,    0.5498,    0.6708,    0.8932,    1.4342,
    0.9508,    0.7324,    0.5784,    1.4943,    1.0915,    0.7644,
    1.2159,    1.3049,    1.1408,    0.9398,    0.6197,    0.6603,
    1.3928,    1.4084,    0.6909,    0.8400,    0.5381,    1.3729,
    0.7731,    0.7319,    1.3439,    0.8142,    0.9586,    0.7379,
    0.7548,    0.7393,    0.6739,    0.8651,    1.3699,    1.1458])

xm1 = 0
ym1 = 0
zm1 = 0
xm2 = 0
ym2 = 0
zm2 = 0

#求每个分量的平均值
for i in range(0,36):
    xm1 = xm1 + x1[i]
    xm2 = xm2 + x2[i]
    ym1 = ym1 + y1[i]
    ym2 = ym2 + y2[i]
    zm1 = zm1 + z1[i]
    zm2 = zm2 + z2[i]

xm1 = xm1/36
ym1 = ym1/36
zm1 = zm1/36
xm2 = xm2/36
ym2 = ym2/36
zm2 = zm2/36

m1 = np.array([[xm1],[ym1],[zm1]])
m1 = mat(m1)
m2 = np.array([[xm2],[ym2],[zm2]])
m2 = mat(m2)

sw = np.zeros((3,3))
sw = mat(sw)
sw1 = np.zeros((3,3))
sw1 = mat(sw1)
sw2 = np.zeros((3,3))
sw2 = mat(sw2)

for i in range(36):
    k1 = np.array([[x1[i]],[y1[i]],[z1[i]]])
    k1 = mat(k1)
    k2 = np.array([[x2[i]],[y2[i]],[z2[i]]])
    k2 = mat(k2)
    s1 = (k1-m1)*((k1-m1).T)
    s2 = (k2-m2)*((k2-m2).T)
    sw1 = sw1 + s1
    sw2 = sw2 + s2

sw = sw1 + sw2
w = (sw.I)*(m1-m2)
print('w：')
print(w)

w0 = -((w.T)*(m1+m2))/2
print('w0:')
print(w0)

#样本点初始化
s = np.array([[1,1.5,0.6],[1.2,1.0,0.55],[2.0,0.9,0.68],[1.2,1.5,0.89],[0.23,2.33,1.43]])

print('样本点和它的类型：')

for i in range(5):
    x = s[i]
    x = mat(x)
    t = (w.T)*(x.T)
    if t > (-w0):
        print('x',i+1,'属于第一类')
    elif t < (-w0):
        print('x',i+1,'属于第二类')
    else:
        print('无法判断')
        




























